#pragma once
#include "../BaseClass.h"
#include "XmlNodeType.h"
#include "XmlAttribute.h"

namespace System{
namespace Xml{

/*******************************************************/
class XmlNode
{
protected:
	XmlNodeType m_XmlNodeType;
	System::MemString* m_Name;
	System::MemString* m_Value;
	XmlAttributeCollection* m_Attributes;


	XmlNode* m_Parent;
	XmlNode* m_NextSibling;
	XmlNode* m_PreviousSibling;

	//XmlNodeCollection* m_Children;


public:
	XmlNode(void);
	virtual ~XmlNode(void);

public:
	const System::MemString* GetNodeName();
	const System::MemString* GetNodeValue();
	const System::Xml::XmlAttributeCollection* GetAttributes();

public:
	VIRTUAL_GET_TYPE();
	VIRTUAL_TOSTRING();

};

DEFINE_CLASS_TYPE(System_Xml_XmlNode, _T("System::Xml::XmlNode"));


/*******************************************************/
class XmlNodeCollection : public XObject, public PointerList<XmlNode*>
{
public:
	XmlNodeCollection();
	virtual ~XmlNodeCollection(void);

public:
	VIRTUAL_GET_TYPE();
	VIRTUAL_TOSTRING();
};

DEFINE_CLASS_TYPE(System_Xml_XmlNodeCollection, _T("System::Xml::XmlNodeCollection"));



}
}